package myfile;

import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Test6 {
    //需求：统计文件夹各文件的数量


    public static void main(String[] args) {
        File file=new File("");
        HashMap<String,Integer> hm = getcount(file);
        System.out.println(hm);

    }

    public static HashMap getcount(File src){
        HashMap<String,Integer> hm=new HashMap<>();

        //进入文件夹
        File[] arr = src.listFiles();
        //遍历数组
        for (File file : arr) {
            //如果是文件
            if(file.isFile()){
                String name=file.getName();
                String[] endname = name.split("\\.");
                if(endname.length>=2){
                    String end=endname[endname.length-1];
                    if(hm.containsKey(end)){
                        //存在
                        int count=hm.get(end);
                        count++;
                        hm.put(end,count);
                    }
                    else{
                        //不存在
                        hm.put(end,1);
                    }
                }
            }
            else{
                //如果是文件夹,递归
                HashMap<String,Integer> hm2=getcount(file);
                //遍历hm2集合把数据累加到hm
                Set<Map.Entry<String, Integer>> entries = hm2.entrySet();
                for (Map.Entry<String, Integer> entry : entries) {

                    String key = entry.getKey();
                    Integer value = entry.getValue();

                    if(hm.containsKey(key)){
                        //存在
                        int count = hm.get(key);
                        count+=value;
                        hm.put(key,count);
                    }
                    else{
                        //不存在
                        hm.put(key,value);
                    }
                }
            }

        }
        return hm;
    }
}
